import { prisma } from "@/lib/db";
import { unstable_cache } from "next/cache";
import { cache } from 'react';

// type KeyList = typeof prisma;
type callBackProp = () => void;
type modelType = "user" | "menus";
export async function dataList<T extends callBackProp>(
  callBack: callBackProp,
  model: T
) {
  prisma["user"].findFirst({
    where: {
      name: "fasd",
    },
  });
  const result = await callBack();
}

// 方法1：使用 unstable_cache 并确保函数内部逻辑不依赖于当前时间
export const getRandomTime = unstable_cache(
  async () => {
    // 使用固定的值而不是每次生成新的时间戳
    // 这样可以验证缓存是否生效
    const fixedTime = new Date().getTime(); // 2023-01-01 的时间戳
    console.log('getRandomTime 函数被执行了，如果缓存生效，这个日志应该只出现一次');
    return fixedTime;
  },
  ['random-time-key'],
  {
    revalidate: 10, // 10秒后重新验证
    tags: ['time-tag'], // 添加标签以便手动使缓存失效
  }
);

// 方法2：使用 React 的 cache 函数
// export const getCachedTime = cache(() => {
//   console.log('getCachedTime 函数被执行了，如果缓存生效，这个日志应该只出现一次');
//   return new Date("2023-01-01").getTime();
// });
